<html>
  <head>
    <script text="javascript" src="/jsweb/jquery-1.9.1.min.js"></script>
  </head>
  <body>
    <div id="hha" class="book-menu-list" style="width: 100%; height: 200px">
      哈哈
    </div>
  </body>
</html>
<script>
  $(document).ready(function () {
    // class requestController {
    //   constructor(concurrency) {
    //     this.concurrency = concurrency;
    //     this.running = 0;
    //     this.queue = [];
    //   }
    //   addTask(request) {
    //     return new Promise((resolve, reject) => {
    //       const task = () => {
    //         this.running++;
    //         request()
    //           .then((res) => {
    //             reslove(res);
    //           })
    //           .catch((err) => {
    //             reject(err);
    //           })
    //           .fininally(() => {
    //             this.running--;
    //             if (this.queue.length > 0) {
    //               this.queue.shift()();
    //             }
    //           });
    //       };
    //       if (this.running < this.concurrency) {
    //         task();
    //       } else {
    //         this.queue.push(task);
    //       }
    //     });
    //   }
    // }
    // function exampleRequest() {
    //   return new Promise((resolve) => {
    //     setTimeout(() => {
    //       resolve("Request completed");
    //     }, 1000);
    //   });
    // }
    // const controller = new requestController(3);
    // const requests = Array.from({ length: 100 }, () => exampleRequest);
    // const promises = requests.map((request) => controller.addRequest(request));
    // // 等待所有请求完成
    // Promise.all(promises)
    //   .then((results) => {
    //     console.log("All requests completed:", results);
    //   })
    //   .catch((error) => {
    //     console.error("Some requests failed:", error);
    //   });
    function wrapParagraphsWithClass(str, className) {
      // 按 \r\n 分割字符串，过滤空元素
      const paragraphs = str.split("\r\n").filter((p) => p.trim() !== "");

      // 为每个段落添加 p 标签和 class
      const wrapped = paragraphs.map((p) => `<p class="${className}">${p}</p>`);

      // 组合结果（如需保留原换行，可添加 \n；否则直接连接）
      return wrapped.join("");
    }

    // 示例用法
    const originalString = "第一段内容\r\n第二段内容\r\n第三段内容";
    const result = wrapParagraphsWithClass(originalString, "custom-class");
    console.log(result);
  });

  debounce(function () {
    console.log("防抖");
  }, 3300);
  //防抖 指定时间内，事件只会执行一次，再次点击不会执行，会重新计算时间，应用场景包括，滚动事件，鼠标移动事件
  function debounce(func, delay) {
    let timer = null;
    return function () {
      const context = this;
      if (timer) {
        clearTimeout(timer);
      }
      timer = setTimeout(() => {
        func.apply(context, arguments);
      }, delay);
    };
  }
  throttle();
  //节流。指定时间内，事件只会执行一次，再次点击不会执行，会重新计算时间，应用场景包括输入框输入的值获取数据，窗口大小调整
  function throttle(func, delay) {
    var timer;
    return function () {
      var context = this;
      if (!timer) {
        func.apply(context, arguments);
        timer = true;
        setTimeout(() => {
          timer = false;
        }, delay);
      }
    };
  }
</script>
